home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 3.iso / dist / fw_sawfish.idb / usr / freeware / info / sawfish.info-2.z / sawfish.info-2
Text File  |  2001-10-09  |  89KB  |  2,525 lines

  1. This is sawfish.info, produced by makeinfo version 4.0 from
  2. sawmill.texi.
  3.  
  4. START-INFO-DIR-ENTRY
  5. * sawfish: (sawfish).        sawfish programming manual
  6. END-INFO-DIR-ENTRY
  7.  
  8.    This is Edition 0.6, last updated 12 December 1999, of `The sawfish
  9. Programming Manual', for sawfish, Version 0.19.
  10.  
  11.    Copyright 1999 John Harper.
  12.  
  13.    Permission is granted to make and distribute verbatim copies of this
  14. manual provided the copyright notice and this permission notice are
  15. preserved on all copies.
  16.  
  17.    Permission is granted to copy and distribute modified versions of
  18. this manual under the conditions for verbatim copying, provided that
  19. the entire resulting derived work is distributed under the terms of a
  20. permission notice identical to this one.
  21.  
  22. 
  23. File: sawfish.info,  Node: News,  Next: Colors,  Prev: Introduction,  Up: Top
  24.  
  25. News
  26. ****
  27.  
  28.    This lists the user-visible changes made to Sawfish, and which
  29. releases they occurred between. For more detailed information see the
  30. `ChangeLog' files in the Sawfish source tree.
  31.  
  32. 0.99
  33. ====
  34.  
  35.    * Requires `librep' 0.14 or newer
  36.  
  37.    * Translation updates: ja (Sato Satoru), no (Kjartan Maraas), es
  38.      (Carlos Perell≤ Marφn), fi (Antti Ahvensalmi), cs (Jiri Cerny), fr
  39.      (Christian Marillat), de (Matthias Warkus, Christian Meyer), da
  40.      (Ole Laursen), sk (Stanislav Visnovsky), tr (╓zgⁿr), sv (Christian
  41.      Rose, Peter Winnberg), gl (Jesus Bravo Alvarez)
  42.  
  43.    * Do i18n on more text strings (Vlad Harchev, me)
  44.  
  45.    * Broken support for multiple-screen displays. Supplying the new
  46.      `--multihead' option will fork extra copies of sawfish for each
  47.      extra screen. This has some fundamental problems, but some people
  48.      seem to want it (Michael Vogt, Mahmood Ali, me)
  49.  
  50.    * Window manager virtual modifier once again defaults to `M-'
  51.      instead of `C-'
  52.  
  53.    * Added support for `Off2' and `Off3' events
  54.  
  55.    * `menu-program-stays-running' variable now defaults to true by
  56.      popular demand
  57.  
  58.    * New command `focus-desktop'
  59.  
  60.    * Switch viewports more efficiently (by choosing the best order to
  61.      move windows, to minimize the exposed area)
  62.  
  63.    * Monitor the `_WIN_WORKSPACE' property of each window
  64.  
  65.    * Bug fixes:
  66.  
  67.         - Check for X SHAPE extension, exit if it's not available
  68.  
  69.         - Wait for the focus-in event before changing sawfish's
  70.           knowledge of the focused window when moving focus from one
  71.           window to another
  72.  
  73.         - Be more ICCCM-compliant, don't send synthetic configure notify
  74.           events when the window was resized
  75.  
  76.         - Fixed locale font handling
  77.  
  78.         - Don't leave grid traces when trying to move/resize a window
  79.           that's locked in place
  80.  
  81.         - Fixed bug where the pointer being over the message window
  82.           could confuse focus after window cycling
  83.  
  84.         - `decorate-transients' option works again with shaded windows
  85.  
  86.         - Documentation appears in tooltips again
  87.  
  88.         - Handle sticky properties better in the `window-history' module
  89.  
  90.         - Maximization fixes for multi-headed displays (Florent
  91.           Guillaume)
  92.  
  93.         - Cancelling a resize of a maximized window no longer discards
  94.           the window's maximized state
  95.  
  96.  
  97. 0.38
  98. ====
  99.  
  100.    * Translation updates: gl (Jesus Bravo Alvarez), sv (Martin
  101.      NorbΣck), de (Matthias Warkus, Christian Meyer), ru (Vlad
  102.      Harchev), es (Joseba Garcφa Etxebarria), pl (Daniel Koc), fi
  103.      (Antti Ahvensalmi), sk (Stanislav Visnovsky), az (Pablo
  104.      Saratxaga), cz (Stanislav Brabec), no (Kjartan Maraas), el (Simos
  105.      Xenitellis), it (Michele Campeotto), fr (Christian Marillat), ro
  106.      (Marius Andreiana), ko (?)
  107.  
  108.      Extract some more translatable strings (Vlad Harchev)
  109.  
  110.    * `Crux' theme now has an extra button mode: `Default', like Mac OS
  111.      Platinum but also has an iconify button. Used by default
  112.  
  113.    * The `grow-pack' module now works with windows which specify
  114.      increments (Kai Gro▀johann)
  115.  
  116.    * New command `kill-client'
  117.  
  118.    * Fixed bugs:
  119.  
  120.         - Don't return a null pointer when no default cursor has been
  121.           set, return `nil' instead
  122.  
  123.         - Avoid triggering assertions in the stacking list code when
  124.           raising or lowering windows and the given sibling has been
  125.           destroyed
  126.  
  127.         - Turned off the annoying code that beeps and prints a message
  128.           when unfocusable windows are detected
  129.  
  130.         - The GNOME hints now listen for the `_WIN_WORKSPACE' property
  131.           changing and will move the window in response
  132.  
  133.         - Don't forget maximized state of windows when they're moved,
  134.           only if they're resized
  135.  
  136.         - Don't show special cursors when moving or resizing windows, or
  137.           when hovering over the title bar
  138.  
  139.         - Corrected off-by-one error in `smart' placement modes
  140.  
  141.         - Identified and fixed some problems in the new GNOME/KDE window
  142.           manager hints implementation (Rob Hodges, me)
  143.  
  144.  
  145. 0.37
  146. ====
  147.  
  148.    * New command line option `--window-history-file=FILE'
  149.  
  150.    * Search for user's rc file in this order: `~/.sawfishrc',
  151.      `~/.sawfish/rc', `~/.sawmillrc'
  152.  
  153.    * New option `configure-ignore-stacking-requests' and a
  154.      similarly-named window property. When set stacking requests from
  155.      windows are ignored (Matt Tucker)
  156.  
  157.    * When restarting sawfish, reselect the previously selected workspace
  158.  
  159.    * Added a function that can recolour multiple image channels
  160.      simultaneously
  161.  
  162.    * New function `exit-type' - returns the type of exit in progress
  163.  
  164.    * Translation updates: ja (Sato Satoru), sk (Stanislav Visnovsky),
  165.      es (I±aki Garcφa Etxebarria), hu (Robert Vanyi), tr (Fatih Demir),
  166.      ro (Tutu Valentin), no (Kjartan Maraas), it (Michele Campeotto), pl
  167.      (Daniel Koc)
  168.  
  169.    * Fixed bugs:
  170.  
  171.         - Fixed focus-handling in enter-only mode on window close and
  172.           viewport switch
  173.  
  174.         - Fixed overflow error in the image recolouring module (Simon
  175.           Budig)
  176.  
  177.         - Session management always uses a unique session file (Timo
  178.           Korvola, me)
  179.  
  180.         - Fixed bug in random placement mode where windows could
  181.           sometimes be placed off-screen
  182.  
  183.         - Fixed some auto-raise problems by reverting a misguided bug
  184.           fix
  185.  
  186.         - Fixed bugs with aborted session saves
  187.  
  188.         - Cache stacking order of windows locally - this allows us to
  189.           keep the order consistent, especially after window
  190.           reparenting operations
  191.  
  192.         - Don't call `XParseColor' unless we actually _have_ a display
  193.           connection (merlin)
  194.  
  195.         - Merged two calls to `setlocale' to avoid trashing the locale
  196.           preferences
  197.  
  198.         - Check for presence of Xinerama extension before trying to use
  199.           it - removes the annoying error message at startup
  200.  
  201.         - Added some more X server timestamp logic to correct for the
  202.           timestamp discontinuities after APM resume
  203.  
  204.  
  205. 0.36
  206. ====
  207.  
  208.    * Added a new default theme: `Crux'. By default it recolours itself
  209.      to match the current GTK+ selection colour. (Arlo Rose, me)
  210.  
  211.    * Updated translations: it (Michele Campeotto), fr (Christian
  212.      Marillat)
  213.  
  214.    * Added a `shade-button' button class (many themes created it anyway)
  215.  
  216.    * Added a `sawfish.wm.util.recolor-image' module, currently contains
  217.      a single function for recolouring parts of images based on a given
  218.      colour gradient
  219.  
  220.    * Added new command `delete-group'. Deletes a whole group of
  221.      windows. With default bindings, shift-click on the close button to
  222.      invoke this command
  223.  
  224.    * Added support for KDE-style mini-icons. If the window has no
  225.      normal icon, then `window-icon-image' will return the mini-icon
  226.  
  227.    * Fixed bugs:
  228.  
  229.         - Themes that use the module for reading the user's gtk
  230.           preferences will once again get updated when the gtk theme
  231.           changes
  232.  
  233.         - Fix another of the null-string translation bugs (Christian
  234.           Marillat)
  235.  
  236.         - Work around `XUrgencyHint' not being defined before X11R6
  237.  
  238.         - Fixed some long-standing bugs when decorating windows (use the
  239.           correct mask when creating the overall window shape; for
  240.           frame parts with no mask, set the local shape to the
  241.           appropriate rectangle; be sure to generate at least one
  242.           Expose event when reconfiguring frame parts)
  243.  
  244.         - Fixed crashing bug when `bind-keys' is called with zero
  245.           arguments
  246.  
  247.         - Fixed typo in `crop-image' function when checking validity of
  248.           HEIGHT parameter (martin@whoever.com)
  249.  
  250.  
  251. 0.35
  252. ====
  253.  
  254.    * Translation updates: ja (SATO Satoru), it (Michele Campeotto),
  255.      zh_TW.Big5 (Chun-Chung Chen), pl (Daniel Koc), sk (Stanislav
  256.      Visnovsky)
  257.  
  258.    * Items in `choice' widgets may now contain descriptive names,
  259.      syntax is `(SYMBOL "DESCRIPTION")'
  260.  
  261.    * Changed `focus-windows-when-mapped' option to only apply to
  262.      non-transient windows (this option is now enabled by default)
  263.  
  264.    * New placement modes `top-left' and `off-center'.  `top-left' is
  265.      now the default mode for non-transients
  266.  
  267.    * Enabled the module supporting the newly standardized GNOME/KDE
  268.      window manager hints. Also made random changes to support KDE2 a
  269.      lot better
  270.  
  271.    * Added WM_PROTOCOLS `_SAWFISH_WM_RAISE_WINDOW' and
  272.      `_SAWFISH_WM_LOWER_WINDOW'. Used by `maybe-raise-window' and
  273.      `maybe-lower-window' functions.
  274.  
  275.      These are similar to `WM_TAKE_FOCUS', in that if the window
  276.      supports the protocol, it's up to it whether or not it raises (or
  277.      lowers) the window in question. These functions should only be used
  278.      where the user hasn't explicitly requested the restacking
  279.  
  280.      An example usage is an application that doesn't want its window to
  281.      be raised due to a button-press event that initiates a drag
  282.      operation
  283.  
  284.    * New option `menus-include-shortcuts', disabled by default (Unai
  285.      Uribarri)
  286.  
  287.    * Don't interpret windows with `WM_TRANSIENT_FOR' set to the root
  288.      window as children of all windows in the group (it causes too many
  289.      annoying effects), instead just decorate these windows as
  290.      transients
  291.  
  292.    * Handle `group' and `transient' iconification modes better, don't
  293.      use a recursive method, instead use one pass to identify the
  294.      windows to change, then another to make the changes. In
  295.      `transients' mode, only change the state of shared transients if
  296.      they will have no visible parents afterwards
  297.  
  298.    * In the (old) GNOME hints code, support a `_WIN_HINTS' client
  299.      message (with a similar format to the `_WIN_STATE' message)
  300.  
  301.    * New module `sawfish.wm.commands.viewport-extras', some commands
  302.      for viewport for viewport navigation (Dams NadΘ)
  303.  
  304.    * Check for `never-iconify' and `never-maximize' window properties
  305.      when appropriate
  306.  
  307.    * Support sixth and seventh mouse buttons (Steve Haslam)
  308.  
  309.    * Bug fixes:
  310.  
  311.         - Fixed problems with reverting changes to list-based options
  312.  
  313.         - Don't allow the empty list as a valid modifier list
  314.  
  315.         - Fixed bug where restarting the wm with
  316.           `focus-windows-when-mapped' set would cause any shaded
  317.           windows to be deleted
  318.  
  319.         - Ignore iconified windows in the grow-pack code
  320.  
  321.         - Added `font-ascent' and `font-descent' functions to the gaol
  322.  
  323.         - Catch errors when loading site-init and rep-defaults files
  324.  
  325.         - Don't use `""' to denote a null doc string (which has bad
  326.           side effects when internationalized)
  327.  
  328.         - Don't need to run `sawfish-client -' to get a repl anymore,
  329.           just `sawfish-client'
  330.  
  331.         - Fixed bugs in `composite-images' function
  332.  
  333.         - Fixed ordering of states output by `gtk-style' program
  334.           (michaelj@maine.rr.com)
  335.  
  336.         - Fixed grabbing mono window icons in gdk-pixbuf mode
  337.  
  338.         - Reject button event descriptions that don't specify at least
  339.           one mouse button
  340.  
  341.         - Accept `()' as a valid image modifier color component
  342.  
  343.         - Now grabs translatable strings from `defgroup' forms correctly
  344.  
  345.  
  346. 0.34
  347. ====
  348.  
  349.    * Added a virtual modifier key, the `W-' modifier. This modifier is
  350.      used for all standard window-manager key bindings, it may be set
  351.      to any of the standard X modifiers using the configuration tool
  352.  
  353.    * Optionally show window-icons when cycling through windows (Unai
  354.      Uribarri Rodrφguez, me)
  355.  
  356.    * Event handlers for low-level X windows now get passed the window
  357.      as their second argument (Unai Uribarri Rodrφguez)
  358.  
  359.    * Translation updates: fr (Christian Marillat), sv (Richard Hult),
  360.      pt_BR (Flßvio Bruno Leitner), it (Michele Campeotto)
  361.  
  362.    * Error handler module (`sawfish.wm.ext.error-handler'). When loaded
  363.      it records the most recent errors, and the time at which they
  364.      occurred. Use the `display-errors' command to display all recorded
  365.      errors.
  366.  
  367.    * Added an option to not save window-history data for transient
  368.      windows. Also added a `window-history-clear' command to forget
  369.      history for all windows.
  370.  
  371.    * Rearranged window operations menu to hopefully be clearer
  372.  
  373.    * Attempt to catch and handle errors while loading custom options
  374.  
  375.    * Labels in menu items can now be functions, they should return the
  376.      label text when called (with any menu arguments)
  377.  
  378.    * Moved installed message catalogues to $datadir/locale
  379.  
  380.    * `defcustom' forms may now a `:widget-flags' keyword, a constant
  381.      list of symbols passed to the configuration tool. Current flags
  382.      include: `expand-vertically' and `expand-horizontally'
  383.  
  384.    * Added a `sawfish.wm.util.ping' module, it implements the
  385.      `_NET_WM_PING' protocol of the new window manager spec.
  386.  
  387.    * `destroy-notify-hook' is no longer called asynchronously
  388.  
  389.    * Bug fixes:
  390.  
  391.         - Fixed various bugs when dragging/resizing windows
  392.  
  393.         - Reverted the changes to make the click-to-focus click-through
  394.           setting apply to window decorations
  395.  
  396.         - Fixed bug when handling 32-bit data in client messages and X
  397.           properties
  398.  
  399.         - Fixed window-focus problems when switching viewports
  400.  
  401.         - Many bug-fixes to handling of maximized window state.
  402.           Maximized state should now be preserved across wm and session
  403.           restarts. It's also saved in the window-history attributes
  404.  
  405.         - Support the function hints of the MWM window manager
  406.           properties
  407.  
  408.         - Updated the `sawfish.wm.state.wm-spec' module to match the
  409.           current (almost final) draft of the new GNOME/KDE window
  410.           manager spec
  411.  
  412.         - Fixed sporadic stacking bugs when unmapped windows exist
  413.  
  414.         - Fixed miscellaneous click-to-focus and focus-click-through
  415.           related bugs
  416.  
  417.  
  418. 0.33
  419. ====
  420.  
  421.    * Added support for user-levels associated with individual commands
  422.  
  423.    * The GNOME hints code now understands that the do-not-cover flag is
  424.      the same as sawfish's `avoid' property
  425.  
  426.    * Swap properties of sticky windows when entering and leaving
  427.      workspaces as for normal windows (fixes the old problem where
  428.      sticky windows can grab focus when a workspace is entered)
  429.  
  430.    * Changed the default settings of some customization options,
  431.      hopefully to give a more "conventional" feel for new users
  432.  
  433.    * Better support for Xinerama (Geoff Reedy)
  434.  
  435.    * Added a new set of window stacking commands: `raise-window',
  436.      `lower-window', `raise-lower-window'. The set of windows affected
  437.      by these commands is determined by the `user-raise-type' (either
  438.      the individual window, the window and any transients, or the
  439.      entire group). The old commands of these names are now called
  440.      `FOO-single-window'.
  441.  
  442.      Most modules now use these commands when raising or lowering
  443.      windows, allowing the stacking model to be configured globally.
  444.  
  445.    * Translation updates: no (Kjartan Maraas), fi (Antti Ahvensalmi),
  446.      it (Christopher R. Gabriel), pt_BR (Douglas Moura Ferreira), uk
  447.      (Yuri Syrota), de (Matthias Warkus)
  448.  
  449.    * Fixed bugs:
  450.  
  451.         - If committing changes in the configurator causes new
  452.           customization options or groups to be added, update the UI to
  453.           reflect this
  454.  
  455.         - Added code to detect and correct the sporadic bug where
  456.           windows become unfocusable in click-to-focus mode
  457.  
  458.         - Sanitized how the focus gets passed to and from transient
  459.           windows (when passing focus back from a transient, give it to
  460.           the most recently focused window in the group, not the
  461.           transient's parent)
  462.  
  463.           Also, try to avoid displaying maximize buttons in windows
  464.           whose hints prevent them from being maximized
  465.  
  466.         - Many fixes to how maximized windows are handled across session
  467.           and window manager restarts. Also support GNOME window
  468.           maximized hints when windows are created
  469.  
  470.         - Fixed some bugs in the `wm-spec' module
  471.  
  472.         - Don't trigger auto-raise hooks on leave/enter events
  473.           generated by pointer grabs
  474.  
  475.         - The `edge-flip-delay' option now applies when dragging windows
  476.  
  477.         - Fixed the preview command in `sawfish-themer'
  478.  
  479.         - Miscellaneous fixes to the "smart" window placement modes
  480.  
  481.         - Fixed type description of `persisitent-group-ids' option
  482.  
  483.         - In `enter-exit' focus mode, focus isn't removed due to
  484.           enter/leave events due to pointer grabs (fixes the bug with
  485.           Mozilla URL completion)
  486.  
  487.         - Fixed (again) the `focus-click-through' behaviour with
  488.           respect to frame decorations
  489.  
  490.         - Re-added hack to make GMC icons unfocusable
  491.  
  492.         - Fixed interactive placement to check for window destruction
  493.           (merlin)
  494.  
  495.         - Fixed bug with tiled images with shapes (the shape mask would
  496.           always be applied an integer number of times, ignoring the
  497.           size of the frame part it's associated with)
  498.  
  499.         - Fixed `window-wants-input-p' to check if the `InputHint' is
  500.           set before reading the value
  501.  
  502.  
  503. 0.32
  504. ====
  505.  
  506.    * `M-TAB' window cycling now works in both directions, bind keys to
  507.      `CYCLE-COMMAND-backwards', e.g.  `cycle-windows-backwards'
  508.      (Merlin, me)
  509.  
  510.    * Added support for X `Urgency' hint: `window-urgent-p' and
  511.      `window-state-change-hook' is called with `urgency' state when it
  512.      changes
  513.  
  514.    * Some improvements to `shade-hover' mode (adapted from Eli Barzilay)
  515.  
  516.    * Functions that raise/lower groups of windows now generate the
  517.      minimum number of expose events (Rob Hodges, me)
  518.  
  519.    * New window property `window-list-skip'. Unified with GNOME
  520.      skip-winlist hint
  521.  
  522.    * Custom options may have tooltips, use `:tooltip' tag
  523.  
  524.    * Catch errors when applying custom changes and revert to previous
  525.      state
  526.  
  527.    * Translation updates: uk (Yuri Syrota), pt_BR (Douglas Moura
  528.      Ferreira), hu (R≤bert Vßnyi), de (Christian Meyer), ja (SATO
  529.      Satoru), da (Keld J°rn Simonsen), es (I±aki Garcφa Etxebarria), fr
  530.      (Christian Marillat)
  531.  
  532.    * Fixed bugs:
  533.  
  534.         - With click-to-focus in non-click-through mode, don't
  535.           click-through into window decorations
  536.  
  537.         - `dimensions' property in window matching was called `size' by
  538.           mistake
  539.  
  540.         - Export the various `sp-cost:' functions from the
  541.           `sawfish.wm.placement.smart' module
  542.  
  543.         - Don't allow cycles in the transient-for relationship
  544.  
  545.         - Fixed some maximize bugs
  546.  
  547.         - GNOME skip-focus property no longer causes the window to be
  548.           unfocusable, just uncyclable-to
  549.  
  550.         - Coerce auto-raise timeout to be at least one millisecond;
  551.           support `disable-auto-raise' correctly
  552.  
  553.         - Window input hints defaults to true not false
  554.  
  555.         - Fixed typo when loading the defaults file (Ronald Wahl)
  556.  
  557.         - Fixed command spec of `move-window-FOO' commands (Yoshiki
  558.           Hayashi)
  559.  
  560.         - When sending `WM_TAKE_FOCUS' message, only focus the window
  561.           if its `Input' hint is set
  562.  
  563.  
  564. 0.31.1
  565. ======
  566.  
  567.    * Translation updates: da (Kenneth Christiansen), de (Christian
  568.      Meyer), no (Kjartan Maraas), pt_BR (Rui Miguel Silva Seabra), sv
  569.      (Johan Dahlin), uk (Yuri Syrota)
  570.  
  571.    * Bug fixes:
  572.  
  573.         - Fixed typos in `sawfish.wm.gnome.integration' and
  574.           `sawfish-themer' (Christian Marillat)
  575.  
  576.         - Fixed bug when building on Tru64 (John H. Palmieri)
  577.  
  578.         - Remember to check return value when initializing Imlib
  579.  
  580.  
  581. 0.31
  582. ====
  583.  
  584.    * Requires librep version `0.13'
  585.  
  586.    * Organized all lisp code into a hierarchy of modules. Root points
  587.      are `sawfish.wm' for window manager code, `sawfish.ui' for
  588.      configurator and `sawfish.gtk' for GTK+ utilities
  589.  
  590.      Compatibility should have been preserved as far as possible,
  591.      through the use of module aliases. The `user' module that
  592.      unmodularized user code is loaded in should look very similar to
  593.      the old environment.  However, code using private functions,
  594.      probably will not work
  595.  
  596.      New features written as modules can either import modules
  597.      individually, or just open `sawfish.wm' to get the core
  598.      functionality
  599.  
  600.    * All command handling is now written in Lisp. It's fully compatible
  601.      except for how commands are defined. Since there is no longer a
  602.      unified namespace the mapping from names to command definitions is
  603.      maintained separately.
  604.  
  605.      `define-command' and `autoload-command' add entries to this
  606.      mapping. `define-command' takes a name and a function (and some
  607.      other optional arguments). The old style of defining commands still
  608.      works, but only in the user module
  609.  
  610.    * `sawfish-client' now provides the same repl as the normal `rep'
  611.      program. E.g. this allows the module system to be easily inspected
  612.  
  613.      Also, the module of each loaded theme is available for inspection
  614.      under `themes.THEME-NAME'. (With themes using top-level defines
  615.      instead of a single `let*' block, this is useful for debugging)
  616.  
  617.    * `sawfish.client' module provides lisp functions for communicating
  618.      with a running window manager. Also, the protocol has been
  619.      modified to support proper communication of errors, which are then
  620.      re-raised on the client-side. This should make debugging
  621.      client-server code more obvious
  622.  
  623.    * `Action' parts of menu items may now be lisp objects that don't
  624.      have a read syntax. (E.g. this allows closures to be used,
  625.      avoiding the problems arising from modularization)
  626.  
  627.    * Support for checked and radio-group menu items. Also a new
  628.      function `add-window-menu-toggle' to add items to the `Toggle'
  629.      sub-menu of each window
  630.  
  631.    * Handle `ConfigureRequest' events in a way that is compliant with
  632.      the ICCCM--honour the window's `win_gravity' setting (defaulting
  633.      to `NorthWest' gravity), instead of assuming `Static' gravity
  634.  
  635.    * Support more GC attributes in the `sawfish.wm.util.x' plugin (Ryan
  636.      Pavlik)
  637.  
  638.    * Support for handling arbitrary windows as extra "root" windows.
  639.      Used, e.g., to support Nautilus' desktop window. Allows the focus
  640.      modes to work correctly
  641.  
  642.      To support this, new window property `desktop' denoting a
  643.      "desktop" window; new function `desktop-window-p' recognizing one
  644.      of these things (or the symbol `root')
  645.  
  646.    * Added `pointer-motion-threshold' option. Pointer motion events are
  647.      only generated when the pointer moves at this many pixes away from
  648.      the position it had when the button was pressed
  649.  
  650.    * New functions: `scale-image', `composite-images', and `crop-image'.
  651.  
  652.    * New option `maximize-avoid-avoided' (Jonas Linde)
  653.  
  654.    * New functions exported by `sawfish.wm.ext.tooltips' module:
  655.      `display-tooltip', `remove-tooltip'
  656.  
  657.    * New function exported from `sawfish.wm.viewports' module:
  658.      `select-workspace-and-viewport'. Renamed some workspace functions:
  659.  
  660.      `ws-move-window' => `move-window-to-workspace', `ws-copy-window'
  661.      => `copy-window-to-workspace', `ws-insert-workspace' =>
  662.      `insert-workspace', `ws-move-workspace' => `move-workspace',
  663.      `ws-remove-window' => `remove-workspace'.
  664.  
  665.    * Changed interface of `get-visible-window-edges' function to use
  666.      proper keyword parameters, and added some new keywords
  667.  
  668.    * New commands `help:about' and `gnome-about'. Added a
  669.      `sawfish-about' script to implement the first of these. Added
  670.      associate menu items to the `Help' menu
  671.  
  672.    * New window property `cycle-skip', defines whether the window is
  673.      included when cycling the focused window. (Dave Dribin, me)
  674.  
  675.    * Translation additions and updates: es (I±aki Garcφa Etxebarria),
  676.      tr (Fatih Demir), zh_CN.GB2312 (zw@zhaoway.com), fr (Christian
  677.      Marillat), ja (SATO Satoru), de (Kai Lahmann), el (Simos
  678.      Xenitellis), ga (Seßn ╙ Ceallaigh), ru (Valek Filippov), sl
  679.      (Andraz Tori)
  680.  
  681.    * Bug fixes:
  682.  
  683.         - Don't let errors in `.sawfishrc' prevent customization
  684.           settings being loaded
  685.  
  686.         - initialize event handler when creating X window proxies (Matt
  687.           Tucker)
  688.  
  689.         - No longer able to `throw' out the top of the program by
  690.           mistake
  691.  
  692.         - Fixed `find-head' function, to allow Xinerama support to work
  693.  
  694.         - When exiting, leave window configurations exactly as they were
  695.           found (E. Jay Berkenbilt)
  696.  
  697.         - Fixed `synthesize-event' to scan the window tree for a child
  698.           window accepting button events (E. Jay Berkenbilt)
  699.  
  700.         - Removed "yow! ..." debugging messages
  701.  
  702.         - `image-set' and related functions will add an alpha channel
  703.           to the image when necessary (when using gdk-pixbuf)
  704.  
  705.         - Canonify `S-x' as `X' where possible
  706.  
  707.         - Catch and handle errors when matching properties in the
  708.           `sawfish.wm.ext.match-window'
  709.  
  710.         - Escape underscores in menu items where they shouldn't
  711.           introduce accelerators. (Added `quote-menu-item' function to
  712.           help with this)
  713.  
  714.         - Fixed race-condition when exiting configurator embedded into
  715.           the GNOME control center (Havoc Pennington, me)
  716.  
  717.         - Fixed bug in `set' method of the `icon' widget
  718.  
  719.         - Fixed shading behaviour of included themes (Daniel Lundell)
  720.  
  721.         - Compute the shape of the frame window each time the
  722.           background of one of its parts changes
  723.  
  724. 0.30.3
  725. ======
  726.  
  727.    * If a frame part has a non-nil `hidden' attribute, ignore it
  728.  
  729.    * When reframing windows, keep the absolute position of the client
  730.      window constant
  731.  
  732.    * Support `FIXED_POSITION' GNOME hint (renamed old `fixed-position'
  733.      property as `client-set-position'; `fixed-position' now means
  734.      don't allow the window to be moved by the user)
  735.  
  736.    * `transients-above' option can now be set per-window
  737.  
  738.    * Translation updates: fr (Christian Marillat), en_GB (Robert
  739.      Brady), de (Kai Lahmann), da (Keld Simonsen), ru (Valek Filippov),
  740.      sl (Andraz Tori), no (Kjartan Maraas), gl (Jesus Bravo Alvarez), it
  741.      (Michele Campeotto)
  742.  
  743.    * Fixed bugs when converting option values
  744.  
  745.    * Fixed `:require' keyword in `defcustom' always causing the module
  746.      to be loaded, not just when the option is non-nil
  747.  
  748.    * Fixed bug when adding windows that are shaded
  749.  
  750.    * Fixed some minor bugs in the configurator
  751.  
  752.  
  753. 0.30.2
  754. ======
  755.  
  756.    * Window cycling now forwards terminating events to external
  757.      applications as well as internal bindings (e.g. `M-TAB M-w' closes
  758.      an activated Netscape window)
  759.  
  760.    * `quote-event' command now works with applications that ignore
  761.      synthetic events (adapted from code by Timo Korvola)
  762.  
  763.    * Reorganized frame style and window type management. New function
  764.      `define-frame-type-mapper' allows modules to affect the mapping
  765.      from window type to frame type. E.g. the shading module uses this.
  766.      (fixes the bug that changing the frame type of a shaded window
  767.      didn't work)
  768.  
  769.    * Added function `variable-customized-p'; use this to avoid
  770.      redefining user-modified options
  771.  
  772.    * Do type-directed deep conversion of values when converting to/from
  773.      readable representations. This fixes the bug that options with
  774.      `:type (optional color)' weren't being converted when passed
  775.      between the wm and the configurator, leading to reader errors
  776.  
  777.      A side-effect of this is that updated custom files will not be
  778.      compatible with previous versions of the wm (though old custom
  779.      files will work with new versions)
  780.  
  781.    * Translation updates: no (Kjartan Maraas), de (Kai Lahmann), nl
  782.      (Dennis Smit), sl (Andraz Tori)
  783.  
  784.    * Added primitives `map-windows' and `filter-windows'
  785.  
  786.    * Fixed bug of not retaining focus on startup when originally in
  787.      PointerRoot mode and moving to click-to-focus mode (Brad Thompson)
  788.  
  789.    * Ensure that apps get sent a synthetic ConfigureNotify event after
  790.      ConfigureRequest events are handled (fixes bug where menus in Java
  791.      apps can appear at wrong position until window is moved)
  792.  
  793.    * When referencing known variables from subroutines, make sure that
  794.      restricted environment doesn't prevent the variable being accessed
  795.      (fixes bug where `default-bevel-percent' was being ignored)
  796.  
  797.    * When creating transient groups, don't compare null group ids
  798.      (fixes xfmail related bugs)
  799.  
  800.    * Fixed `move-window-to-viewport' command to correct for 1...
  801.      indexing
  802.  
  803.    * Fixed non-gnome workspace widget in configurator
  804.  
  805.  
  806. 0.30
  807. ====
  808.  
  809.    * New commands `activate-viewport-column', `activate-viewport-row'
  810.  
  811.    * New commands `raise-window-and-transients',
  812.      `lower-window-and-transients' and
  813.      `raise-lower-window-and-transients',
  814.      `raise-transients-and-pass-through-click'.
  815.  
  816.      As the normal window stacking commands, but restacks the
  817.      "transient-group" of the window. This includes the window itself
  818.      and any transients it has, and any windows that it itself is a
  819.      transient of.
  820.  
  821.      These commands are used in the default keymaps
  822.  
  823.    * Functions that deal with transient windows now understand the de
  824.      facto standard of setting the `WM_TRANSIENT_FOR' property to the
  825.      root window denotes that the window is a transient for the whole
  826.      group
  827.  
  828.    * New image manipulation functions: `image-ref', `image-set',
  829.      `image-fill', `image-map'. New color accessor function
  830.      `color-rgb-8'. New function `root-window-id'
  831.  
  832.    * Improvements to `sawfish-ui': optionally use some GNOME widgets,
  833.      more lisp widget types, some bug fixes
  834.  
  835.    * New command `command-sequence'. Allows individual bindings to
  836.      invoke a sequence of commands
  837.  
  838.    * Options `iconify-group-mode' and `uniconify-group-mode' replace
  839.      `iconify-whole-group' and `uniconify-whole-group'.  New commands
  840.      `iconify-transient-group', and `uniconify-transient-group'
  841.  
  842.    * Added `:type*' key to `defcustom', like `:type', but value is left
  843.      unquoted
  844.  
  845.    * Translation updates: pl (Daniel Koc), ru (Valek Filippov), uk
  846.      (Yuri Syrota), es (I±aki Garcφa Etxebarria)
  847.  
  848.    * Fixed handling of `WM_NORMAL_HINTS' (was using base-size instead
  849.      of min-size in places)
  850.  
  851.    * Fixed further locale / FontSet bug (Tomohiro KUBOTA)
  852.  
  853.    * `window-history' module won't resize a window to a size that
  854.      violates its size constraints
  855.  
  856.  
  857. 0.29
  858. ====
  859.  
  860.    * Rewrote the configuration user interface. Improvements include:
  861.  
  862.         - Key bindings may now include parameters. E.g. this finally
  863.           allows shell commands to be bound to keys using the GUI (use
  864.           the new `run-shell-command' command)
  865.  
  866.         - Nautilus-like user-levels to tailor the options shown to the
  867.           expertise of the user
  868.  
  869.         - Options may have much richer type descriptions (including
  870.           `match-window' options). Also, extra widget types and
  871.           containers may be added as extra Lisp modules
  872.  
  873.         - By default the stand-alone configurator commits changes to the
  874.           window manager as they are made, instead of waiting for the
  875.           `Try' button to be pressed
  876.  
  877.         - Added dependences--options with dependences are only editable
  878.           when the value of their dependence is non-`nil'
  879.  
  880.    * Rewrote window stacking code to be based on "stacking
  881.      predicates"--functions that accept or reject a possible stacking
  882.      configuration. This allows the "stack-transients-above-parents"
  883.      option to work correctly, only keeping transient windows above
  884.      their _own_ parent windows
  885.  
  886.    * The configure-event handler now understands and handles the full
  887.      complexity of stacking requests (Brad Thompson)
  888.  
  889.    * New frame-part attribute: `scale-foreground'. The `cursor'
  890.      attribute may now be a function
  891.  
  892.    * Made the `centered', `centered-on-parent' and `under-pointer'
  893.      placement modes clamp the window into the current work area (i.e.
  894.      without overlapping windows that shouldn't be covered).  Added a
  895.      `stagger' placement mode
  896.  
  897.    * When grabbing window icons to images, preserve their shape masks
  898.  
  899.    * Moved `window-history' options to `placement' group.  Fixed some
  900.      more bugs and sub-optimal default option values
  901.  
  902.    * Don't set cursors for button classes, use the default value
  903.  
  904.    * GNOME `SKIP_FOCUS' window hint sets `never-focus' property on
  905.      window, as well as the `ignored' property
  906.  
  907.    * Translation updates: de (Karl Eichwalder), ru (Valek Filippov), da
  908.      (Kenneth Christiansen)
  909.  
  910.    * Added mostly-complete support for using gdk-pixbuf instead of
  911.      Imlib (requires an experimental Xlib version of the gdk-pixbuf
  912.      library)
  913.  
  914.    * Various bug fixes and other minor changes...
  915.  
  916.  
  917. 0.28.1
  918. ======
  919.  
  920.    * New options `--visual=TYPE' and `--depth=DEPTH'. These tell the
  921.      window manager to use a different visual than the default
  922.  
  923.    * Made the `window-history' module behave more sanely (don't save
  924.      iconified or shaded state; include window name when generating
  925.      keys for transient windows)
  926.  
  927.    * Made `beos-window-module' the standard window menu (require
  928.      `old-window-menu' to get the original version). Also made this
  929.      display the windows' class names
  930.  
  931.    * Updated translations: es (I±aki Garcφa Etxebarria), tr (Fatih
  932.      Demir)
  933.  
  934.  
  935. 0.28
  936. ====
  937.  
  938.    * New module `window-history'--automatically saves window attributes
  939.      when they are explicitly set by the user, then copies these
  940.      attributes to windows with the same `WM_CLASS' as they are
  941.      created. This is loaded automatically if you have no `.sawfishrc'
  942.  
  943.    * New method of allowing themes to implement only some of the
  944.      (currently) four frame types. The variable
  945.      `frame-type-fallback-alist' maps each frame type to the type to
  946.      try if the original type isn't available in the chosen frame style.
  947.  
  948.      Note that for this to work, themes must return `nil' when they
  949.      don't support the requested frame type, until now, the convention
  950.      had been to return the default frame definition, so most if not
  951.      all themes will need changing. (This doesn't include themes
  952.      created using the `make-theme' module.)
  953.  
  954.    * Made the metrics used by the `best-fit' placement mode
  955.      user-controllable. Set the `sp-cost-components' variable to a list
  956.      of cost functions and the weight to apply to that metric. E.g. by
  957.      default it gives 50% importance to the distance from the placement
  958.      to the focused window, and 25% each to the distance to the pointer
  959.      and to the "future-unusefulness" of the area being covered
  960.  
  961.    * New module `beos-window-menu' to redefine the window menu to group
  962.      items by the window group that they are a member of (in the
  963.      absence of actual group information, it will heuristically build
  964.      groups by matching window titles)
  965.  
  966.    * New option `edge-flip-warp-pointer', whether or not to warp the
  967.      pointer after edge-flipping (Paul Warren)
  968.  
  969.    * New option `display-window:uniconify-to-current-workspace',
  970.      controls whether windows uniconified by `display-window' should be
  971.      moved to the current workspace (John N S Gill)
  972.  
  973.    * Changed method of selecting when to use multi-byte aware rendering
  974.      functions (except when initializing the locale fails, or returns a
  975.      7-bit locale); also, when creating a fontset fails, try to
  976.      intelligently fall back to a similar group of fonts (Tomohiro
  977.      Kubota)
  978.  
  979.    * The `x' library now supports creating and then drawing to pixmaps.
  980.      The pixmaps can then be grabbed to images using the
  981.      `make-image-from-x-drawable' function
  982.  
  983.    * Added a `Help' item to the root menu
  984.  
  985.    * Translation updates: fi (Antti Ahvensalmi), gl (Jesus Bravo
  986.      Alvarez), de (Karl Eichwalder), nl (Jan Nieuwenhuizen), pl (Daniel
  987.      Koc), tr (Fatih Demir)
  988.  
  989.    * Now supports the `Super' modifier
  990.  
  991.    * Fixed bug of sometimes ignoring pending X events
  992.  
  993.    * Fixed bug of calling focus change hooks too many times (only when
  994.      our view of the focused window has actually changed)
  995.  
  996.    * Avoid problems when windows set weird size hints structures
  997.  
  998.    * Raise windows _after_ possibly moving them to a different layer,
  999.      when they have been mapped
  1000.  
  1001.    * When the `cycle-windows' sequence is terminated by an unknown
  1002.      event, re-handle that event after exiting (so that e.g.  `M-TAB'
  1003.      can be followed by another `M-' qualified event without releasing
  1004.      Meta)
  1005.  
  1006.  
  1007. 0.27.2
  1008. ======
  1009.  
  1010.    * Translation updates: da (Kenneth Christiansen), de (Karl
  1011.      Eichwalder), es (I±aki Garcφa Etxebarria), ja (SATO Satoru)
  1012.  
  1013.    * Attempt to destructure the language code when parsing GNOME
  1014.      desktop items (e.g. if `LANG=de_DE' look for both `de_DE' and `de'
  1015.      translations)
  1016.  
  1017.    * New focus handler events `enter-root' and `leave-root'
  1018.  
  1019.    * Removed `raise-groups-on-focus' option, it caused unstable window
  1020.      flickering in certain cases
  1021.  
  1022.    * Fixed bug When transferring focus after a window is unmapped
  1023.      (inverted choice of when to look under pointer, and when to look in
  1024.      focus history)
  1025.  
  1026.  
  1027. 0.27
  1028. ====
  1029.  
  1030.    * Changed the name from `sawmill' to `sawfish'; all user-visible
  1031.      binaries have been renamed appropriately, the old programs will
  1032.      still work for now...
  1033.  
  1034.    * Added support for accelerators in menu definitions (this requires
  1035.      a new rep-gtk package) (Richard Kilgore). Added accelerators to
  1036.      many of the standard menu items
  1037.  
  1038.    * Added some (untested) support for Xinerama: `current-head',
  1039.      `current-head-dimensions', `current-head-offset'. Some placement
  1040.      modes should handle multiple heads sensibly, as should window
  1041.      maximization and edge snapping.
  1042.  
  1043.    * Added icons for GNOME control center applets (all icons by Tigert,
  1044.      except for the saw-blade logo by Glyph Lefkowitz)
  1045.  
  1046.    * New functions `map-window-properties' (me), `window-icon-image'
  1047.      (Bruce Miller)
  1048.  
  1049.    * Changed behaviour of `raise-group' and `lower-group' to preserve
  1050.      the stacking of the group, then change the selected window.  Added
  1051.      new command `raise-lower-group'
  1052.  
  1053.    * New option `raise-groups-on-focus'
  1054.  
  1055.    * Updated translations: de (Hubert Nachbaur), es (I±aki Garcφa
  1056.      Etxebarria), gl (Jesus Bravo Alvarez), ko (Man-Yong Lee), tr
  1057.      (Fatih Demir)
  1058.  
  1059.    * Try to handle errors more gracefully when creating window frames
  1060.  
  1061.    * Better handling of errors in the control center applet
  1062.  
  1063.    * Fixed the `below-client' frame-part attribute
  1064.  
  1065.    * Fixed the disappearing items in the match-windows dialog
  1066.  
  1067.    * Fixed the non-beautified entries in the keymaps dialog
  1068.  
  1069.    * Fixed interactive placement mode (Timo Korvola)
  1070.  
  1071.    * Invoke audio playing program asynchronously, may avoid deadlocks
  1072.  
  1073.    * Fixed `workspace-menu' to add the focus-marking asterisk (John N S
  1074.      Gill)
  1075.  
  1076.    * Fixed menu-obscuring bug after auto-raising windows
  1077.  
  1078.    * Ensure that `WM_STATE' property is set each time a window is
  1079.      mapped, not just the first time
  1080.  
  1081.    * Fixed bug when discarding grab in click-to-focus mode, even though
  1082.      successive events may be in the window's keymap
  1083.  
  1084.    * Only focus windows when they're mapped when they're visible
  1085.  
  1086.    * Fixed click-to-focus problems when unmapping transient windows
  1087.  
  1088.  
  1089. 0.26
  1090. ====
  1091.  
  1092.    * Added plugin `selection', adds functions `x-selection-active-p'
  1093.      and `x-get-selection' for retrieving X selections (Mark Probst)
  1094.  
  1095.    * New functions `prompt-for-window', `prompt-for-workspace' and
  1096.      `select-workspace-interactively' (Dave Pearson)
  1097.  
  1098.    * `window-anim' module enabling asynchronous animations after window
  1099.      events. Currently only two animation styles `wireframe' and
  1100.      `solid', and they only animate window iconification
  1101.  
  1102.    * `audio-events' module; maps window manager events to audio samples
  1103.      (played using esd by default, but can be configured to use any
  1104.      program)
  1105.  
  1106.    * When running programs in terminals from the GNOME apps menu, use
  1107.      the value of `xterm-program' to decide which terminal program to
  1108.      use (James Antill)
  1109.  
  1110.    * Translation updates: gl (Jesus Bravo Alvarez), pl (Daniel Koc)
  1111.  
  1112.    * New command `toggle-window-iconified' (Jens-Ulrik Petersen)
  1113.  
  1114.    * New option `raise-windows-when-unshaded'
  1115.  
  1116.    * Customization options for tooltip colors (Erik Assum)
  1117.  
  1118.    * Removed default binding to `A-x'
  1119.  
  1120.    * Added support for librep-with-module-system (cvs version)
  1121.  
  1122.    * Note that `ko' and `zh' languages need FontSets
  1123.  
  1124.    * When sticking a window not on the current viewport, move it to the
  1125.      current viewport (Merlin)
  1126.  
  1127.    * Fixed bug (?) of placing over avoided windows in `random' mode;
  1128.      also increased `sp-avoided-windows-weight' by an order of
  1129.      magnitude (Dan Winship)
  1130.  
  1131.    * Fixed bug of maximizing a window changing its viewport
  1132.  
  1133.    * Fixed window cycling losing grab if originally focused window is
  1134.      unmapped
  1135.  
  1136.    * Fixed `get-cursor' to use the correct background color when
  1137.      creating cursors from vectors (Alexander Barinov)
  1138.  
  1139.    * Fixed `get-font' to set `descent' property correctly
  1140.  
  1141.    * Changed double-buffering semantics in `x' plugin, also only
  1142.      support this if configure finds the correct header files
  1143.  
  1144.    * Fixed `synthesize-event' to generate correct relative pointer
  1145.      positions
  1146.  
  1147.    * Don't focus on non-visible windows (crashes GNOME control center)
  1148.  
  1149.    * Fixed bug of using `cp' to install GNOME desktop files
  1150.  
  1151.  
  1152. 0.25.2
  1153. ======
  1154.  
  1155.    * If no user customization file when saving options, inherit from
  1156.      the custom-defaults file
  1157.  
  1158.    * Rewrote window stacking (fixes bugs, more efficient)
  1159.  
  1160.    * Added `input-focus' to theme-callable functions
  1161.  
  1162.    * When focused window is unmapped, don't try to focus non-visible
  1163.      windows
  1164.  
  1165.    * Fixed `display-window' when it's applied to iconified windows
  1166.  
  1167.    * New variables `fonts-are-fontsets' and `fontset-languages-re' to
  1168.      work around broken X servers
  1169.  
  1170.    * Update edges for snapping to when dragging windows across
  1171.      workspaces or viewports
  1172.  
  1173.    * When passing keymaps to customization system, filter out, then
  1174.      later restore, bindings that aren't symbols
  1175.  
  1176.    * Most commands to move/copy windows between workspaces can now be
  1177.      told whether to select the destination workspace or not
  1178.  
  1179.    * In GNOME hints, never place windows on workspaces that don't exist
  1180.      (from the pager's POV). (Rob Hodges)
  1181.  
  1182.    * Fixed `ws-move-window' to not remove the window if source and dest
  1183.      are the same (Rob Hodges)
  1184.  
  1185.    * Fixed `sp-prune-points' function (Dan Winship)
  1186.  
  1187.    * Fixed `move-viewport-to-window' to only flip viewports if window
  1188.      isn't already on the current viewport (Merlin)
  1189.  
  1190.    * Try to detect and handle system clock being rewound
  1191.  
  1192.    * Optional second arg to `x-raise-window'; added symmetrical
  1193.      function `x-lower-window'
  1194.  
  1195.    * Fixed unix-domain server code assuming atomic writes to sockets
  1196.  
  1197.    * Added double buffering support to `x' module
  1198.  
  1199.    * Fixed grabs during multi-key sequences; also, print the current
  1200.      prefix keys if idle during a multi-key sequence
  1201.  
  1202.  
  1203. 0.25.1
  1204. ======
  1205.  
  1206.    * Only force windows onto the visible screen if they didn't
  1207.      explicitly set their position
  1208.  
  1209.    * Redefine `/' in themes to be the `quotient' function (integer
  1210.      division), which is what they expect. The `divide' function can be
  1211.      used for real division
  1212.  
  1213. 0.25
  1214. ====
  1215.  
  1216.    * New plugin `x', a basic Xlib binding for creating and drawing in
  1217.      windows (Merlin, me)
  1218.  
  1219.    * Added a method of reading textual input from the user from
  1220.      completion. Provision for completing functions, variables,
  1221.      commands, files, directories, etc.... Also supports reading
  1222.      passwords. (Topi Paavola, me)
  1223.  
  1224.    * Re-enabled the following interactive codes: `a' (function), `C'
  1225.      (command), `D' (directory), `f' (existing file), `F' (file), `k'
  1226.      (event), `n' (number), `N' (prefix or number), `s' (string), `S'
  1227.      (symbol), `v' (variable)
  1228.  
  1229.    * Support prefix keys in bindings (binding an event to a keymap, or
  1230.      the name of a keymap, marks that event as a prefix key for the
  1231.      associated keymap)
  1232.  
  1233.    * New command `call-command-with-output-to-screen', prompts for and
  1234.      invokes a command, then displays any output it emitted (bound to
  1235.      `A-x' in default keymaps)
  1236.  
  1237.    * New variable `multi-click-delay', maximum time in milliseconds
  1238.      between button presses to count as `click2' or `click3' events
  1239.      (Martin Blais)
  1240.  
  1241.    * New option `edge-flip-only-when-moving' (Yaron M. Minsky)
  1242.  
  1243.    * New window cycling commands `cycle-prefix', `cycle-class' (Kai
  1244.      Gro▀johann); can now be bound to events with more than one
  1245.      modifier (Timo Korvola)
  1246.  
  1247.    * New command `uniquify-window-name'; new property `unique-name'.
  1248.      Forces the window to have a unique name
  1249.  
  1250.    * New commands `size-window-add-column',
  1251.      `size-window-subtract-column', `size-window-add-row',
  1252.      `size-window-subtract-row'
  1253.  
  1254.    * Window edge snapping now has three variants: `magnetism' (the old
  1255.      method), `attraction' and `resistance'. (Merlin, me)
  1256.  
  1257.    * New commands `grow-window-{left,right,up,down}' and
  1258.      `pack-window-{left,right,up,down}' (Kai Gro▀johann)
  1259.  
  1260.    * Support the `WM_COLORMAP_WINDOWS' protocol
  1261.  
  1262.    * New functions `synthesize-event', `font-ascent', `font-descent',
  1263.      `call-with-keyboard-grabbed'
  1264.  
  1265.    * New functions `define-placement-mode' and
  1266.      `define-focus-mode'--make defining these things easier. Focus
  1267.      modes are now settable for each window individually
  1268.  
  1269.    * Made the tree-organised customization groups work better with the
  1270.      GNOME control center. Add the sawmill capplet desktop entries to
  1271.      the GNOME programs menu (under Settings). Also, beautify the names
  1272.      displayed in the bindings widget
  1273.  
  1274.    * When applicable, load the GNOME applications menu when the wm is
  1275.      first idle, reduces the latency of displaying the first root menu
  1276.  
  1277.    * Translation updates: de (Hubert Nachbaur), es (I±aki Garcφa
  1278.      Etxebarria), ja (Sato Satoru), sv (Andreas Persenius)
  1279.  
  1280.    * Fix bug of not noticing when the keyboard / pointer / modifier
  1281.      mappings change
  1282.  
  1283.    * Fixed `current-event-string' function
  1284.  
  1285.    * Better method of reconfiguring frames when they're resized (helps
  1286.      opaque resizing)
  1287.  
  1288.    * Added some kludges to try and break the intermittent lockups some
  1289.      people have seen
  1290.  
  1291.    * Made the auto-gravity option work a lot better (John N S Gill, me)
  1292.  
  1293.    * Fixed bug where unmapped windows were being included in the
  1294.      snapping calculation
  1295.  
  1296.    * Fixed bug when uniconifying windows and merging workspaces
  1297.  
  1298.    * Fixed bug of warp-cursor-to-window trying to put the pointer
  1299.      outside the screen boundaries (Merlin)
  1300.  
  1301.    * Fixed bug of losing keyboard grab when originally focused window
  1302.      is deleted during `x-cycle' command
  1303.  
  1304.    * Fixed bug of trying to focus unviewable parent windows when
  1305.      focused window is unmapped
  1306.  
  1307.  
  1308. 0.24
  1309. ====
  1310.  
  1311.    * Configure requests events are now passed to the hook
  1312.      `configure-request-hook'. The new configure handler respects
  1313.      window gravity when resizing
  1314.  
  1315.    * New option `configure-auto-gravity'. When enabled the window
  1316.      gravity is implied by the position of the center of the window.
  1317.      (e.g.  try placing the GNOME control center in the bottom right
  1318.      corner of the screen, then click on an item that causes it to
  1319.      resize)
  1320.  
  1321.    * Worked around the numerous reports of non-existent font errors
  1322.      that using `XCreateFontSet' causes--fall back to `XLoadQueryFont'
  1323.      if possible
  1324.  
  1325.    * There's now a library `custom-defaults' giving default
  1326.      customization options (only if the user has no `~/.sawmill/custom')
  1327.  
  1328.      Also, remove the need to call `custom-add-required' in
  1329.      `.sawmillrc', it's always done now
  1330.  
  1331.    * New window properties `focus-when-mapped', and `gravity'
  1332.      (overrides the hinted gravity value)
  1333.  
  1334.    * New placement modes `under-pointer' and `centered-on-parent'
  1335.  
  1336.    * New option `resize-edge-mode', replaces `resize-by-frame-class'
  1337.      and `resize-add-edges'>. Also allows twm-style resizing (Mark
  1338.      Probst, me)
  1339.  
  1340.    * Optionally display command documentation in tooltips; tooltips are
  1341.      now aligned into columns (if you use a monospaced font for them)
  1342.  
  1343.    * Variables `default-cursor', `synthetic-configure-mutex',
  1344.      `frame-draw-mutex', `frame-state-mutex' are now functions
  1345.  
  1346.    * New functions `x-keysym-name', `x-lookup-keysym', `decode-event',
  1347.      `encode-event'.
  1348.  
  1349.    * New option `move-resize-inhibit-configure'
  1350.  
  1351.    * Translation updates: es (I±aki Garcφa Etxebarria), fr (Christian
  1352.      Gillot), gl (Jesus Bravo Alvarez), nl (Han-Wen Nienhuys), pt_PT
  1353.      (Rui Silva), sv (Andreas Persenius)
  1354.  
  1355.    * Fixed single-quoting in client readline (Matt Krai), copied
  1356.      bouncing parentheses hack
  1357.  
  1358.    * Removed `fp->win == 0' assertion, it should be harmless and was
  1359.      triggering for some people
  1360.  
  1361.    * Fixed bug of sending configure notify events to too many windows
  1362.  
  1363.    * Fixed off-by-one error in `ws-insert-workspace' (Kirk Saranathan)
  1364.  
  1365.    * Fixed maximization in single directions to work additively
  1366.  
  1367.    * Fixed bug of leaving tooltips displayed after the associated
  1368.      window has been deleted
  1369.  
  1370.    * Fixed bug of not removing `-clientId' option from restart
  1371.      parameters
  1372.  
  1373.    * Fixed bug of not translating customize group names
  1374.  
  1375.  
  1376. 0.23
  1377. ====
  1378.  
  1379.    * Customization groups are now organized as a tree structure, with
  1380.      groups able to contain subgroups
  1381.  
  1382.    * Define the list of features that will be presented to the user in
  1383.      `sawmill-defaults.jl', by calling `custom-add-required'. If you
  1384.      have a `.sawmillrc' you'll need to do this manually
  1385.  
  1386.    * New function `move-resize-window-to' doing a combined move/resize.
  1387.      New variable `synthetic-configure-mutex', when set holds off
  1388.      sending synthetic `ConfigureNotify' events to windows until it's
  1389.      unset (this is held while interactively moving or resizing windows)
  1390.  
  1391.    * New hook `after-add-window-hook'. Called with a single parameter,
  1392.      the window that's has just been adopted
  1393.  
  1394.    * New functions `x-kill-client', `delete-window-safely'.
  1395.      `send-client-message' now groks long integers (i.e. cons cells) in
  1396.      32-bit data (Timo Korvola)
  1397.  
  1398.    * `window-put', `window-get', `image-put', `image-get', `font-put',
  1399.      `font-get': use `equal' to compare keys, not `eq'
  1400.  
  1401.    * New module `error-handler', implements a simple alternative error
  1402.      handler (and allows the much-maligned beep to be turned off),
  1403.      requires rep 0.11+
  1404.  
  1405.    * Allow the pointer-warp position to be defined relative to the
  1406.      window (Kai Gro▀johann)
  1407.  
  1408.    * New module `shade-hover', unshades windows while the pointer is
  1409.      over them
  1410.  
  1411.    * Don't automatically warp to the new workspace when opening windows
  1412.      on a different workspace
  1413.  
  1414.    * Include iconified sticky windows in the `window-menu', shorten
  1415.      sticky entries as usual (James Antill)
  1416.  
  1417.    * Support the `TryExec' field in GNOME desktop files (Ian)
  1418.  
  1419.    * New commands: `raise-or-pass-through-click',
  1420.      `raise-and-pass-through-click-if-focused'
  1421.  
  1422.    * New module `move-cursor', various commands for moving the mouse
  1423.      pointer; these commands are bound to the cursor keys when moving
  1424.      or resizing windows
  1425.  
  1426.    * Translation updates: es (I±aki Garcφa Etxebarria), fr (Fabien
  1427.      Ninoles), gl (Jesus Bravo Alvarez), ja (Satoru Sato), nl (Jan
  1428.      Nieuwenhuizen), tr (FΓtih Demir)
  1429.  
  1430.    * Fix bug of leaving window-name unset when `WM_NAME' is a null text
  1431.      property
  1432.  
  1433.    * Don't fail catastrophically if unable to open the default font
  1434.  
  1435.    * Fixed method of truncating maximized window dimensions
  1436.  
  1437.    * Fixed the match-window `skip-winlist' and `skip-tasklist'
  1438.      properties I'd stupidly broken
  1439.  
  1440.    * Fixed bug of trying to edge-flip sticky windows
  1441.  
  1442.    * Fixed the `move-workspace-forwards' and `move-workspace-backwards'
  1443.      commands
  1444.  
  1445.    * Fixed `uniconify-to-current-viewport' option
  1446.  
  1447.    * Fixed infinite-loop bug in `delete-empty-workspaces' command
  1448.  
  1449.    * Avoid generating empty sub-menus when reading GNOME menu tree
  1450.  
  1451.  
  1452. 0.22
  1453. ====
  1454.  
  1455.    * Window frame parts are now first-class lisp data objects, allowing
  1456.      a higher level of control by themes
  1457.  
  1458.      New or updated functions to access frame parts directly:
  1459.  
  1460.      `frame-part-get', `frame-part-put', `frame-part-window',
  1461.      `frame-part-x-window', `frame-part-position',
  1462.      `frame-part-dimensions', `frame-part-state', `map-frame-parts',
  1463.      `refresh-frame-part', `rebuild-frame-part'
  1464.  
  1465.      Other new functions: `refresh-window'
  1466.  
  1467.    * Updated `sawmill-themer' to emit code to tell the window manager
  1468.      that the theme is editable. The wm adds an `Edit Theme...' option
  1469.      to the Customize menu when appropriate
  1470.  
  1471.    * The `call-after-property-changed' function can now be given a list
  1472.      of properties to monitor (James Antill)
  1473.  
  1474.    * New function `call-after-state-changed', monitors a list of window
  1475.      states (i.e. things like iconified, shaded, ...) and calls a
  1476.      function when any of them change. The `window-state-change-hook'
  1477.      now has a second argument (apart from the window), the list of
  1478.      symbolic states that changed (James Antill)
  1479.  
  1480.    * Add support for `skip-winlist' and `skip-tasklist' to the window
  1481.      matcher when GNOME support is enabled (Ben Liblit)
  1482.  
  1483.    * Integrated patch supporting multi-byte languages from the Kondara
  1484.      MNU/Linux distribution (forwarded by Yukihiro Nakai)
  1485.  
  1486.    * Translation updates: de (Christoph Rauch), es (I±aki Garcφa
  1487.      Etxebarria), gl (Jesus Bravo Alvarez), ja (Satoru Sato), tr (FΓtih
  1488.      Demir)
  1489.  
  1490.    * Use a combo box in the configurator to display the list of themes
  1491.      (it gets given scroll bars when too big for the screen)
  1492.  
  1493.    * Changed timestamp handling--attempt to detect and discard
  1494.      timestamps that arrive out of order
  1495.  
  1496.    * Added option controlling title justification to `mono' theme
  1497.  
  1498.    * Filter <Scroll_Lock> modifiers as well as the other lock modifiers
  1499.      (Matt Krai)
  1500.  
  1501.    * Fixed `display-message' function update background color, and
  1502.      gracefully handle invalid color specifiers (Matt Krai)
  1503.  
  1504.    * Reverted to grabbing events on the client window, not the frame,
  1505.      avoids some awkward-to-fix-correctly problems
  1506.  
  1507.    * Load i18n support _before_ other libraries; ensures that some
  1508.      static strings get translated
  1509.  
  1510.    * Fixed annoying flicker when cycling to an iconified window
  1511.  
  1512.  
  1513. 0.21.1
  1514. ======
  1515.  
  1516.    * Fixed problem causing spurious double-click events to be reported
  1517.      in click-to-focus mode
  1518.  
  1519.    * Fixed problem with binding `-Off' events in the `window-keymap'.
  1520.      (Matt Krai)
  1521.  
  1522.    * Don't try to grab non-existent keys (which actually grabs the
  1523.      entire keyboard)
  1524.  
  1525.    * Fixed some problems with reading unusually formatted GNOME menu
  1526.      entries
  1527.  
  1528.  
  1529. 0.21
  1530. ====
  1531.  
  1532.    * Frame pattern definitions (foreground, background, font) may now
  1533.      take alists as well as the old single object, or list of four
  1534.      objects.  Possible states are `inactive', `focused',
  1535.      `highlighted', `clicked', `inactive-highlighted',
  1536.      `inactive-clicked'. (Last two are new)
  1537.  
  1538.    * New program `sawmill-themer'. A GUI for creating simple themes
  1539.      (those without any parts defined by functions)
  1540.  
  1541.    * New module `gnome-int', loaded by `sawmill-defaults' if GNOME is
  1542.      around, sets up some GNOME'ish things
  1543.  
  1544.    * New command `toggle-single-window-mode'
  1545.  
  1546.    * Translation updates/additions: de (Christoph Rauch), es (I±aki
  1547.      Garcφa Etxebarria), nl (Han-Wen Nienhuys)
  1548.  
  1549.    * Optional removal of tooltips after time period (Morgan Schweers)
  1550.  
  1551.    * `Any-RET' completes interactive move or resize
  1552.  
  1553.    * Work around Imlib's annoying image caching, `make-image' now
  1554.      _always_ returns a new image
  1555.  
  1556.    * Fixed gc bug when building window frames
  1557.  
  1558.    * Fixed X property handling on Alpha's (George Lebl)
  1559.  
  1560.    * Make `call-command' accept closures
  1561.  
  1562.    * Make `(cursor . nil)' work correctly in frame definitions
  1563.  
  1564.    * Grab on frame window, not client window (ICCCM compliant)
  1565.  
  1566.    * Fixed the "uniconify to current workspace" option
  1567.  
  1568.    * Added window-maximization predicates to the gaol
  1569.  
  1570.  
  1571. 0.20
  1572. ====
  1573.  
  1574.    * Rewrote workspace handling--windows can now appear on multiple
  1575.      workspaces, with each instance having different properties
  1576.      (position, size, whatever...)
  1577.  
  1578.      Create new window instances by using the `copy-to-next-workspace',
  1579.      `copy-to-previous-workspace', and `copy-to-workspace:N' commands.
  1580.      Merge instances by moving them to the same workspace, or using the
  1581.      `delete-window-instance' command
  1582.  
  1583.    * Added linear-viewport commands--indexing two-dimensional virtual
  1584.      workspace areas by one-dimensional values (adapted from code by
  1585.      Eric Kidd)
  1586.  
  1587.    * Rewrote tooltips; especially how they're removed (also, don't show
  1588.      null keymaps)
  1589.  
  1590.    * Added new match-window property `ungrouped'. Means to put the
  1591.      window in a group on its own
  1592.  
  1593.    * Translation additions/updates: da (Wandy Christiansen), en_GB
  1594.      (me), es (I±aki Garcφa Etxebarria), fr (Christian Gillot), gl
  1595.      (Jesus Bravo Alvarez)
  1596.  
  1597.    * Fixed bug of not refocusing unshaded windows
  1598.  
  1599.    * Fixed bug of not notifying windows of their actual position after
  1600.      placing them
  1601.  
  1602.    * Fixed bug when grabbing Hyper-modified buttons
  1603.  
  1604.    * Fixed the focus-flickering when moving windows opaquely
  1605.  
  1606.    * Fixed the `commandp' function when applied to autoload stubs
  1607.  
  1608.    * Fixed typo in `gnome-logout' command (Jens Finke)
  1609.  
  1610.    * Fixed `raise-window-and-pass-through-click' command to pass
  1611.      <click2>, etc, events through to frame parts
  1612.  
  1613.    * Fixed infinite-regress bug when reading GNOME menu entries
  1614.      (`Type=directory', but actually a file)
  1615.  
  1616.    * Fixed bug when showing window-move position with snapped movement
  1617.      (adapted from merlin@merlin.org)
  1618.  
  1619.    * Fixed bug when matching null text properties
  1620.  
  1621.  
  1622. 0.19
  1623. ====
  1624.  
  1625.    * Added tooltips for window frames (disabled by default)
  1626.  
  1627.    * Added `Grab...' button to match-windows dialogue, grabs the value
  1628.      of an X property from a window
  1629.  
  1630.    * Support for creating cursors from bitmaps, and for changing the
  1631.      colors of cursors
  1632.  
  1633.    * Internationalized all strings in the configurator
  1634.  
  1635.    * New functions: `frame-part-get', `server-grabbed-p',
  1636.      `forget-button-press', `resize-window-with-hints',
  1637.      `window-in-workspace-p', `windows-share-workspace-p'
  1638.  
  1639.    * New window properties: `never-focus', `raise-on-focus'
  1640.  
  1641.    * New pseudo-property (for window matching): `size', in terms of the
  1642.      window's size hints
  1643.  
  1644.    * Message catalogue additions/updates: Galician (Jesus Bravo
  1645.      Alvarez); Danish (Birger Langkjer)
  1646.  
  1647.    * Don't ignore initial state property of windows
  1648.  
  1649.    * Option to control height of drawn bevels (Chris Hanson)
  1650.  
  1651.    * More logical method of drawing diagonal gradients (Chris Hanson)
  1652.  
  1653.    * Fixed typo when looking for i18n theme README files (Jesus Bravo
  1654.      Alvarez)
  1655.  
  1656.    * Fixed `popup-apps-menu' command (GΘrard Milmeister)
  1657.  
  1658.    * Fixed `define-frame-class' when creating keymaps
  1659.  
  1660.    * Fixed conversion of old-style `(set ...)' custom types
  1661.  
  1662.    * Fixed `raise-window-and-pass-through-click' command to
  1663.      pass-through subsequent clicks
  1664.  
  1665.    * Fixed problems when grabbing/ungrabbing customized keymaps
  1666.  
  1667.    * Fixed screen corruption when doing wireframe moving and
  1668.      `move-resize-raise-window' is set
  1669.  
  1670.    * Hacked around window-order problem when sticky windows exist
  1671.  
  1672.  
  1673. 0.18
  1674. ====
  1675.  
  1676.    * General subsystem for matching windows to properties as they're
  1677.      created. Allows matching on one or more of the window's X
  1678.      properties (e.g. name, class, etc...), and then setting any number
  1679.      of window manager properties as a result. See the `Matched Windows'
  1680.      customize group
  1681.  
  1682.    * Removed all `auto-FOO-alist' and `BAR-windows-re' variables,
  1683.      they're obsoleted by the general match-windows mechanism
  1684.  
  1685.    * Respect window's size hints when maximizing (both to see if the
  1686.      window is maximizable, and to truncate the maximized dimensions to
  1687.      an integral number of rows and columns)
  1688.  
  1689.    * Show actual colors in the configurator, not just their names
  1690.  
  1691.    * Added a new directory to the theme search path:
  1692.      `PREFIX/share/sawmill/themes'. Use this for system-wide themes
  1693.      (don't use the version specific directory)
  1694.  
  1695.    * Included a new theme `mono'
  1696.  
  1697.    * Deprecated the `show-message' function, replaced by
  1698.      `display-message' with a better calling interface; also displays
  1699.      multi-line strings
  1700.  
  1701.    * Deprecated the menu "expand variables when first in list"
  1702.      behaviour. Instead expand variables when the list is dotted to
  1703.      them, as is done for functions
  1704.  
  1705.    * Support the `Hyper' modifier, prefix is `H-'
  1706.  
  1707.    * In the configurator, look for i18n'd theme README files (Yukihiro
  1708.      Nakai)
  1709.  
  1710.    * Added option to disable the ability to grab a second edge while
  1711.      resizing (`resize-add-edges')
  1712.  
  1713.    * Included Danish message catalogue (Kenneth Christiansen)
  1714.  
  1715.    * Renamed `fixed-position' property as `sticky-viewport', and
  1716.      `focus-proxy-click' as `focus-click-through'
  1717.  
  1718.    * When evaluating mouse events, look in the window that the pointer
  1719.      was in when the button was pressed, not where the pointer
  1720.      currently is
  1721.  
  1722.    * Fixed bug where focus gets totally lost after closing a Motif
  1723.      application that has grabbed the keyboard
  1724.  
  1725.    * Fixed (again) the problems when handling remapped windows; also
  1726.      should be more ICCCM-compliant
  1727.  
  1728.    * Fixed typos in one-dimensional maximisation (GΘrard Milmeister)
  1729.  
  1730.    * Fixed the logic deciding when it's necessary to switch workspaces
  1731.      after merging an empty one
  1732.  
  1733.    * Fixed interactive placement showing the window when edge-flipping
  1734.      (but it still doesn't work properly, rubber band traces are left)
  1735.  
  1736.    * Removed flicker when focusing already-focused windows
  1737.  
  1738.  
  1739. 0.17
  1740. ====
  1741.  
  1742.    * First version to use lexically scoped librep. This enables themes
  1743.      to run in a "safe" environment, but all existing themes will need
  1744.      to be ported; other language changes include the use of a single
  1745.      symbol namespace, and scheme-like function call semantics
  1746.  
  1747.    * Support for internationalization of messages and run-time
  1748.      documentation; an en_GB catalogue is the only translation
  1749.      currently, so please send me .po files for your native languages!
  1750.  
  1751.      New option `--disable-nls' to disable i18n
  1752.  
  1753.    * New functions `call-after-property-changed' and
  1754.      `gtkrc-call-after-changed' to allow themes to receive these events
  1755.      (hooks are now off-limits to themes)
  1756.  
  1757.    * New command `raise-window-and-pass-through-click'; bind it to a
  1758.      mouse button in the `window-keymap' to get the "raise window on
  1759.      click" behaviour that seems popular
  1760.  
  1761.    * New commands to move windows incrementally: `slide-window-X' and
  1762.      `slide-group-X' for X one of: `left', `right', `up', `down'
  1763.  
  1764.    * New commands to control `ignored' property of windows (Julian
  1765.      Missig)
  1766.  
  1767.    * New commands to toggle GNOME skip-winlist and skip-tasklist
  1768.      properties of windows
  1769.  
  1770.    * Respect window gravity with program-specified window placement
  1771.      (<merlin@merlin.org>)
  1772.  
  1773.    * Fixed a memory leak in the `stacking-order' function
  1774.  
  1775.    * Fixed the `bevel-image' function (Scott Sams)
  1776.  
  1777.    * Never look in the focused window's keymap by default with mouse
  1778.      events
  1779.  
  1780.    * Hacked around the "need an X11 connection to compile" misfeature
  1781.  
  1782.    * Fixed bug in `gnome-menu' code when GNOME binaries aren't in the
  1783.      first $PATH item; also accept non-alphanumeric language codes
  1784.  
  1785.    * Fixed interactive window placement (again)
  1786.  
  1787.    * Rewrote obscure documentation for some custom options
  1788.  
  1789.    * Fixed bug when grabbing events with `AnyModifier' and a specific
  1790.      button
  1791.  
  1792.  
  1793. 0.16
  1794. ====
  1795.  
  1796.    * Support window groups, both as defined by applications, and
  1797.      defined by the user (either interactively through the window's
  1798.      menu, or via the `auto-group-alist' and `persistent-group-ids'
  1799.      variables).
  1800.  
  1801.      For most commands working on single windows, there's also one
  1802.      operating on the group that the current window is a member of.
  1803.      (With the notable exception currently of moving windows.) There's
  1804.      also options controlling whether (de)iconification operates on
  1805.      windows or groups
  1806.  
  1807.    * Improved GNOME menu support--merge duplicate sub-menus, scan PATH
  1808.      for `gnome-share-directory', also look in `/etc/X11/applnk' for
  1809.      menu entries
  1810.  
  1811.    * Option to control whether edge-flipping flips viewports or
  1812.      workspaces (`edge-flip-type')
  1813.  
  1814.    * New hook `after-framing-hook': called whenever a window's frame is
  1815.      changed or recalibrated
  1816.  
  1817.    * New window placement mode: `first-fit-or-interactive'
  1818.  
  1819.    * Variables specifying common cursor shapes: (`move-cursor-shape',
  1820.      `resize-cursor-shape', `select-window-cursor-shape')
  1821.  
  1822.    * Fix interactive placement
  1823.  
  1824.    * Fix problem of window losing focus when `cycle-windows' only finds
  1825.      a single window; also, abort immediately if there's no windows to
  1826.      cycle through at all
  1827.  
  1828.    * Fix how the `WM_NORMAL_HINTS' property is read after it's been
  1829.      updated
  1830.  
  1831.    * Fix `maximize-fill' functions to respect the
  1832.      `maximize-ignore-when-filling' option
  1833.  
  1834.    * Fix interactive move/resize aborting if keyboard is already grabbed
  1835.  
  1836.    * Ungrab the keyboard as well as the pointer before popping menus
  1837.  
  1838.  
  1839. 0.15
  1840. ====
  1841.  
  1842.    * Changed how themes are loaded from tar files--the tar file must
  1843.      now contain a directory with the same name as the theme; it's this
  1844.      directory that stores the data files
  1845.  
  1846.    * Allow viewport edge-flipping to be enabled by the customization
  1847.      system, also enable flipping while moving windows
  1848.  
  1849.    * Unified the method of marking which windows should be avoided when
  1850.      maximizing, and which windows should be avoided when using the
  1851.      fitted placement methods. Set the `avoid' property instead of the
  1852.      `maximize-avoid' property; new functions `window-avoided-p' and
  1853.      `avoided-windows'; new regexp `avoided-windows-re'
  1854.  
  1855.    * New command `delete-empty-workspaces'
  1856.  
  1857.    * Default theme is now `microGUI'
  1858.  
  1859.    * When resizing only one edge of a window, moving the pointer past
  1860.      one of the perpendicular edges grabs that edge also
  1861.  
  1862.    * Only the first three buttons focus a window in click-to-focus mode
  1863.  
  1864.    * Changed behaviour of `window-id' and `window-frame-dimensions'
  1865.      functions. Replaced `query-last-pointer' function by
  1866.      `query-button-press-pointer'
  1867.  
  1868.    * New hooks: `while-moving-hook', `while-resizing-hook'
  1869.  
  1870.    * Notice when `WM_TRANSIENT_FOR' property changes
  1871.  
  1872.    * More bug fixes to the maximization code, mainly for efficiency;
  1873.      also make first-fit placement work from top-left again
  1874.  
  1875.    * Fix bug when matching events with `Any' modifier as well as other
  1876.      modifiers
  1877.  
  1878.    * Fix bug in `window-outside-viewport-p' (Andreas Degert)
  1879.  
  1880.    * Fix bug in `sawmill-client --' with long inputs
  1881.  
  1882.    * Fix bug when matching windows with session data--`SM_CLIENT_ID' or
  1883.      `WM_COMMAND' _has_ to match
  1884.  
  1885.    * Fix bugs when passive grabbing non-button-press pointer events
  1886.  
  1887.  
  1888. 0.14
  1889. ====
  1890.  
  1891.    * Rewrote window-maximization, many new options
  1892.  
  1893.    * New option `resize-by-frame-class', when enabled (the default),
  1894.      the resized window edges are chosen to match the class of the
  1895.      clicked frame part (i.e. matching the cursor shape)
  1896.  
  1897.    * Load GNOME support code automatically if it looks like GNOME is
  1898.      being used
  1899.  
  1900.    * Create unix-domain sockets in `/tmp'
  1901.  
  1902.    * New hooks: `window-moved-hook', `window-resized-hook',
  1903.      `after-initialization-hook', `shape-notify-hook'.
  1904.  
  1905.    * Improved how menus are displayed; the window-ops menu is shown by
  1906.      ButtonPress not ButtonRelease events
  1907.  
  1908.    * Refocus most-recently-focused window when switching viewport
  1909.  
  1910.    * Added `centered' placement style
  1911.  
  1912.    * Added symbol-completion to readline-based client
  1913.  
  1914.    * Fix bug of not noticing WM_NORMAL_HINTS property changes; follow
  1915.      the window's maximum size hints
  1916.  
  1917.    * Fix bug of not reframing windows when they change from unshaped to
  1918.      shaped, or vice versa
  1919.  
  1920.  
  1921. 0.13
  1922. ====
  1923.  
  1924.    * New option to only highlight frame parts when their window is
  1925.      focused (`highlight-when-unfocused')
  1926.  
  1927.    * Typing `ESC' while moving/resizing a window cancels the operation,
  1928.      restoring the original geometry
  1929.  
  1930.    * New session management hook `sm-after-restore-hook'
  1931.  
  1932.    * New function `set-frame-part-value'--makes customizing the
  1933.      `frame-part-classes' variables easier
  1934.  
  1935.    * Support for loading themes from tar files; needs librep 0.7
  1936.  
  1937.    * Fix bug when allocating colors (choosing an incorrect cached color)
  1938.  
  1939.    * Fix image tiling in frame part backgrounds
  1940.  
  1941.    * Handle shifted keysyms when passive grabbing
  1942.  
  1943.    * Fix another race condition when active grabbing
  1944.  
  1945.    * Fix `_WIN_CLIENT_LIST' property not being set properly (both
  1946.      missing windows immediately after they're adopted, and of
  1947.      intentionally skipping ignored windows)
  1948.  
  1949.    * Fix some problems with viewports when exiting/restarting
  1950.  
  1951.    * Fix broken stacking of windows after they're mapped
  1952.  
  1953.    * Prevent smart window placement blowing up when large numbers of
  1954.      windows are open/opened (throttle back to random placement when the
  1955.      event queue is too large, as well as trying to prune the search
  1956.      space)
  1957.  
  1958.  
  1959. 0.12
  1960. ====
  1961.  
  1962.    * Remember most recently focused windows on each workspace, activate
  1963.      that window after changing workspaces; also, try to preserve focus
  1964.      when moving windows between workspaces
  1965.  
  1966.    * Option to disable auto-raise while cycling through windows
  1967.      (`cycle-disable-auto-raise'); option to restrict cycling to the
  1968.      current viewport (`cycle-all-viewports')
  1969.  
  1970.    * Option `lock-first-workspace' is now enabled by default, and
  1971.      prevents both the first and last interesting workspaces being moved
  1972.      inwards
  1973.  
  1974.    * Added readline support to the client program, pass
  1975.      `--with-readline' option to configure (from Christopher P Goller
  1976.      <goller@eng.utah.edu>)
  1977.  
  1978.    * Added shaped-transient frame to microGUI theme
  1979.  
  1980.    * New frame part attribute `below-client'
  1981.  
  1982.    * Release passive grabs when unadopting windows
  1983.  
  1984.    * When no window has the focus, the `root-window-keymap' is searched
  1985.      for key-press events
  1986.  
  1987.    * Fix bug when binding to the unix-domain socket
  1988.  
  1989.    * Fix focus sometimes being lost when the focused window is destroyed
  1990.  
  1991.    * Fix bug when reading GNOME menu entries without `Type' fields
  1992.  
  1993.    * Fix bug when removing title or border of `shaped-transient' window
  1994.      types (make the window completely unframed)
  1995.  
  1996.    * Fix bug when shading a transient window with `decorate-transients'
  1997.      enabled
  1998.  
  1999.    * Fix some bugs when placing windows that are almost as big or
  2000.      bigger than the screen
  2001.  
  2002.    * Fix some race-conditions between wm-generated and client-generated
  2003.      map/unmap/reparent events
  2004.  
  2005.    * Fix infamous "jerky pointer" bug, this will also make overlapping
  2006.      shaped frame-parts display correctly
  2007.  
  2008.    * Fix bug where `cycle-windows' could leave a window originally
  2009.      under the pointer that's unfocused, drawn as though it is focused
  2010.  
  2011.  
  2012. 0.11
  2013. ====
  2014.  
  2015.    * New option `lock-first-workspace', prevent the first workspace
  2016.      from being deleted when it's empty
  2017.  
  2018.    * New option `ignore-window-input-hint', to always give windows the
  2019.      focus, whether they say they will accept it or not
  2020.  
  2021.    * New options when cycling windows: `cycle-warp-pointer' and
  2022.      `cycle-focus-windows'
  2023.  
  2024.    * Restore the old method of setting the focus, should fix bug of
  2025.      losing focus totally when switching to a new workspace
  2026.  
  2027.  
  2028. 0.10
  2029. ====
  2030.  
  2031.    * Implemented virtual workspaces, bind to the `move-viewport-X' and
  2032.      `move-window-X' commands (for X being `left', `right', `up', or
  2033.      `down')
  2034.  
  2035.    * Added a new theme: `microGUI' by Ryan Lovett
  2036.      <ryan@ocf.berkeley.edu>, based on the QNX Photon screenshots
  2037.  
  2038.    * Added a `Grab key' button in the bindings widget, replaces the
  2039.      current binding with the next pressed key
  2040.  
  2041.    * Lisp module to load the GNOME menus and use them to replace the
  2042.      applications menu. Add `(require 'gnome-menu)' to your
  2043.      `~/.sawmillrc' file to load it
  2044.  
  2045.    * Network server is disabled by default (since it can provide a
  2046.      security hole if X access control is disabled); re-enabled the old
  2047.      unix domain socket code (see the FAQ for more details)
  2048.  
  2049.    * Only give the input focus to windows that actually want it
  2050.  
  2051.    * New option to keep transient windows above their parents
  2052.      (`transients-above-parents')
  2053.  
  2054.    * New option to control how the workspace boundary is handled when
  2055.      moving windows between workspaces (`workspace-send-boundary-mode')
  2056.  
  2057.    * New commands `send-to-workspace:X' for X from 1 to 9
  2058.  
  2059.    * While windows are hidden or shaded, unmap the client (for ICCCM
  2060.      compliance)
  2061.  
  2062.    * Slightly different method of handling destroyed clients, hopefully
  2063.      results in fewer annoying error messages
  2064.  
  2065.    * Support X installations without X11R6 session management (by not
  2066.      doing any session management)
  2067.  
  2068.    * Don't ask the session manager to save our environment
  2069.  
  2070.    * Fix bug where a window is destroyed/unmapped while it's being
  2071.      resized or moved
  2072.  
  2073.    * Fix bug where window can still be auto-raised even if it's been
  2074.      defocused
  2075.  
  2076.    * Fix problems when `--prefix' option has a trailing slash
  2077.  
  2078.    * Now handles client windows being reparented by a third party (i.e.
  2079.      swallowing apps)
  2080.  
  2081.  
  2082. 0.9
  2083. ===
  2084.  
  2085.    * The first-fit and best-fit algorithms are now much more
  2086.      intelligent, e.g. instead of falling back to random placement when
  2087.      a window can't be placed without overlapping an existing window,
  2088.      they will attempt to minimize this degree of overlapping
  2089.  
  2090.    * The `foreground' property of each frame part may now be an image
  2091.      instead of a piece of text
  2092.  
  2093.    * New theme `smaker', uses the foreground images capability to do a
  2094.      somewhat WindowMaker-like theme (with the absolute-e images). This
  2095.      theme is extensively customizable--all images, colors, dimensions,
  2096.      etc...
  2097.  
  2098.    * Use Imlib's fuzzy color matching for all color allocation; this
  2099.      should help on `PseudoColor' visuals
  2100.  
  2101.    * Added an `xterm' command to launch an xterm
  2102.  
  2103.    * Improved the bindings customization widget layout; added a `Copy'
  2104.      button to insert a copy of the current binding
  2105.  
  2106.    * Added `next-workspace-row' and `previous-workspace-row' commands.
  2107.      Together with the `workspace-columns' variable these mimic a 2d
  2108.      desktop
  2109.  
  2110.    * Removed the `cycle-through-workspaces' option, there's now
  2111.      `workspace-boundary-mode'--one of `stop', `wrap-around' or
  2112.      `keep-going'
  2113.  
  2114.    * Added option to include ignored windows when edge snapping
  2115.      (`move-snap-ignored-windows')
  2116.  
  2117.    * Fix race condition between startup of sawmill and gmc; sawmill now
  2118.      has earlier priority
  2119.  
  2120.    * Fix seg fault when running out of color cells while generating a
  2121.      window frame
  2122.  
  2123.    * Fix bug where the window-workspace mapping wasn't reloaded from
  2124.      saved sessions
  2125.  
  2126.    * Fix cancel/revert problems in bindings widget
  2127.  
  2128.    * Fix problems binding to shifted keys when using the XKEYBOARD
  2129.      extension and XFree86
  2130.  
  2131.    * Be ICCCM compliant when a client requests to be moved
  2132.  
  2133.    * Fix crash when tiling small images into large images
  2134.  
  2135.    * Fix bug where windows could be snapped totally off-screen
  2136.  
  2137.    * Fix bug when windows change their `override_redirect' attribute
  2138.      while unmapped
  2139.  
  2140.    * Fix bug associated with WordPerfect's menu window
  2141.  
  2142.  
  2143. 0.8
  2144. ===
  2145.  
  2146.    * First attempt at best-fit window placement (doesn't really work
  2147.      properly yet...)
  2148.  
  2149.    * Added a customization option to focus windows when they're
  2150.      un-iconified (`focus-windows-on-uniconify')
  2151.  
  2152.    * Fix bug in click-to-focus mode where the click is only passed
  2153.      through to the client window, not to any local bindings of the wm
  2154.  
  2155.    * Don't leave windows unframed if there's an error in the user's
  2156.      startup files
  2157.  
  2158.    * Fix bug in `preallocated-workspaces' option
  2159.  
  2160.    * Don't place windows off-screen in first-fit mode
  2161.  
  2162.  
  2163. 0.7
  2164. ===
  2165.  
  2166.    * Added stack-based window cycling, bound to `M-TAB' by default.
  2167.      Hold <Meta>, keep pressing <TAB> until the correct window is
  2168.      reached, then let go of <Meta>.
  2169.  
  2170.    * Added first-fit window placement (a.k.a smart-placement)
  2171.  
  2172.    * Completed first stage of workspace rewrite--shouldn't go ballistic
  2173.      when windows are removed anymore
  2174.  
  2175.    * Added `override-frame-part-classes' variable--allows all frame
  2176.      properties to be overridden on a per-class basis
  2177.  
  2178.    * Click-to-focus now accepts any button and any modifiers
  2179.  
  2180.    * Don't snap to gmc icons or panels
  2181.  
  2182.    * Added an `auto-window-type-alist' variable mapping window names to
  2183.      border types
  2184.  
  2185.    * New variables `eval-modifier-events' and `eval-key-release-events'
  2186.      to allow catching these types of keyboard events, disabled by
  2187.      default
  2188.  
  2189.    * Added functions for actively grabbing the keyboard
  2190.  
  2191.    * Removed the long names of the keyboard modifiers, only the single
  2192.      character modifiers are left
  2193.  
  2194.    * If no alt modifier, set it to the same as meta; new variables
  2195.      `alt-keysyms' and `meta-keysyms' describe the virtual modifier
  2196.      assignments
  2197.  
  2198.    * Fix bug when handling shaped frame parts--it was possible to go
  2199.      into a long enter-, leave-notify loop when the old shape was
  2200.      cleared
  2201.  
  2202.    * Fix bug where opaque resizing with snap-to-edges on moved the
  2203.      window as well as resizing it
  2204.  
  2205.    * Fix bug when raising the only managed window
  2206.  
  2207.    * Fix bug where very small client windows got weirdly shaped frames
  2208.  
  2209.  
  2210. 0.6
  2211. ===
  2212.  
  2213.    * Define the standard "classes" of frame parts (i.e. things like
  2214.      close button, title, left border, etc...) then allow the state of
  2215.      members of these classes to be set in one place (the
  2216.      `frame-part-classes' variable). This should ensure that different
  2217.      themes have the same feel (but a feel that may be customized by the
  2218.      user)
  2219.  
  2220.    * Allow frame parts to be removed if possible (if they have the
  2221.      `removable' property). Nothing makes use of this yet
  2222.  
  2223.    * Added window-shading, double-click button1 on the title bar
  2224.  
  2225.    * Created a sawmill capplet for the GNOME control center. Use the
  2226.      `--enable-capplet' configure option to build it
  2227.  
  2228.    * First attempt at a technical manual (very quickly written, so
  2229.      probably some inaccuracies)
  2230.  
  2231.    * In the `gtk' theme, draw bevels on window decorations
  2232.  
  2233.    * Use spin-buttons in the configurator to enter numbers
  2234.  
  2235.    * Add option `focus-proxy-click' controlling whether to pass the
  2236.      focus-inducing button-press event to the underlying window (in
  2237.      click-to-focus mode)
  2238.  
  2239.    * Changed the bindings in window borders, it's now the more usual
  2240.      button1 to resize, button2 to move
  2241.  
  2242.    * When clicking and dragging windows, ensure that the clicked frame
  2243.      part stays clicked until the button is released
  2244.  
  2245.    * If in click-to-focus mode, and there's no parent window to focus
  2246.      when the focused window is closed, focus the topmost window (not
  2247.      the window under the pointer as in the other focus modes)
  2248.  
  2249.    * Changing window frames is _much_ less ugly, no flicker at all!
  2250.  
  2251.    * Try to optimise window restacking some more
  2252.  
  2253.    * Sped up opaque window moving when the position display is enabled
  2254.  
  2255.    * Preserve iconified state across restarts
  2256.  
  2257.    * Optimise updating the shape of an unframed window (this stops gmc
  2258.      icons flashing annoyingly)
  2259.  
  2260.    * Fix bugs in click-to-focus mode where some windows were
  2261.      un-focusable
  2262.  
  2263.    * Fix bug where cycling through windows in click-to-focus mode
  2264.      didn't focus the activated window
  2265.  
  2266.    * Fix bug where comparing sawmill lisp objects caused a crash
  2267.  
  2268.    * Fix bug where initiating a resize in the middle of the window
  2269.      didn't allow any of the edges to be moved
  2270.  
  2271.    * Fix bug where changing the "decorate transients" option didn't
  2272.      alter any existing transient windows
  2273.  
  2274.    * Fix bug where iconifying a sticky or ignored window gave no way of
  2275.      reclaiming it--these windows now appear at the end of the window
  2276.      menu
  2277.  
  2278.  
  2279. 0.5
  2280. ===
  2281.  
  2282.    * Now does session management. The scheme is extensible, arbitrary
  2283.      Lisp modules can save and restore window state due to their own
  2284.      functionality (using the `sm-window-save-functions' and
  2285.      `sm-restore-window-hook' hooks). See `lisp/workspace.jl' for an
  2286.      example
  2287.  
  2288.    * Displays window position or dimensions whilst interactively moving
  2289.      or resizing a window (`move-show-position',
  2290.      `resize-show-dimensions')
  2291.  
  2292.    * Mechanism for setting frame styles on a per-window basis (this was
  2293.      always possible, just not easy). The `auto-frame-style-alist'
  2294.      variable associates window name regular expressions with frame
  2295.      styles.  Also, the `window-ops-menu' has a new submenu with all
  2296.      possible styles
  2297.  
  2298.    * New option `preallocated-workspaces', the number of workspaces to
  2299.      create at startup
  2300.  
  2301.    * Window-workspace mapping is preserved through restart (as long as
  2302.      the GNOME hints are enabled)
  2303.  
  2304.    * Theme directories may contain a short `README' file that will be
  2305.      displayed in the configuration tool
  2306.  
  2307.    * Changed the custom file to `~/.sawmill/custom' instead of
  2308.      `~/.sawmill-custom'. The old file will be moved to the new
  2309.      location if it exists
  2310.  
  2311.    * Install `sawmill-menu' under `libexec' since it shouldn't be run
  2312.      manually
  2313.  
  2314.    * Option in `gradient' theme to create full-sized gradient images,
  2315.      trading memory for quality
  2316.  
  2317.    * Workaround the flicker when raising windows
  2318.  
  2319.    * Changed most of the `menus' and `custom' customize options into
  2320.      normal variables (they're not particularly intuitive)
  2321.  
  2322.  
  2323. 0.4
  2324. ===
  2325.  
  2326.    * Frame parts can now be highlighted when the mouse is over them,
  2327.      also they "un-click" and "re-click" as the pointer leaves and
  2328.      re-enters their window. ButtonRelease bindings are only activated
  2329.      when the mouse is in the window at the time
  2330.  
  2331.    * Frame part backgrounds can now be rendered on-the-fly using the
  2332.      new `renderer' property in frame definitions. This property is a
  2333.      function called with args `(IMAGE STATE)'; it should draw a
  2334.      background into IMAGE for the specified state (`nil', `focused',
  2335.      `highlighted' or `clicked')
  2336.  
  2337.    * New theme `gtk'. This reads the default GTK style and uses the
  2338.      associated colors and pixmaps to decorate windows. It doesn't try
  2339.      to handle engine-based themes. It should automatically detect when
  2340.      the default style changes (if changed by the GNOME control
  2341.      center). Do `sawmill-client -c gtk-reload-style' in the shell to
  2342.      reload the style manually
  2343.  
  2344.    * Functions for drawing color gradients and bevels into images. The
  2345.      new `gradient' theme uses these and on-the-fly rendering to do
  2346.      `afterstep'-like window titles
  2347.  
  2348.    * Configurator changes: use a paned widget to separate the list of
  2349.      groups from the settings (stops their relative sizes changing),
  2350.      allow each group to be customized separately, either through a new
  2351.      set of root-submenus or the commands `customize:GROUP' for each
  2352.      GROUP.
  2353.  
  2354.    * Changed the way that "themes" are organised, each theme now gets
  2355.      its own directory, which must include a `theme.jl' or `theme.jlc'
  2356.      script to initialise a frame-style of the same name as the
  2357.      directory. While this script is being evaluated the image path is
  2358.      set so that the theme can load any images stored in its directory.
  2359.  
  2360.      Also created the variable `theme-load-path' containing the list of
  2361.      directories searched when trying to load a theme. By default it
  2362.      contains two directories: `~/.sawmill/themes/' and
  2363.      `PREFIX/share/sawmill/VERSION/themes'.
  2364.  
  2365.    * Resizing now chooses the direction to resize the window in by the
  2366.      initial position of the pointer in relation to the window. The
  2367.      window is divided into a 3x3 grid, the pointer must be in one of
  2368.      the outer rectangles to resize in that direction
  2369.  
  2370.    * New commands `select-workspace:X' for X between 1 and 9
  2371.  
  2372.    * Support multiple depths, or layers, of windows
  2373.  
  2374.    * It's now possible to move the current workspace up or down the
  2375.      list of all workspaces
  2376.  
  2377.    * New option `-c COMMAND' to `sawmill-client'; invokes the named
  2378.      interactive function
  2379.  
  2380.    * When an app asks for no title and no border, give it what it
  2381.      wants--use the new `unframed' window type
  2382.  
  2383.    * The maximize button works
  2384.  
  2385.    * Option to control placement of transient windows
  2386.      (`place-transient-mode')
  2387.  
  2388.    * Changing the frame style preserves the original window stacking
  2389.      order
  2390.  
  2391.    * Added documentation strings for most built-in functions
  2392.  
  2393.    * Fix bug of evaluating both KeyPress _and_ KeyRelease events
  2394.  
  2395.    * Fix bug of making the shape mask of unshaped client windows too big
  2396.  
  2397.    * Fix bug where already-handled BadWindow errors were being reported
  2398.  
  2399.    * Fix bug where the `window-ops-menu' could be displayed from one
  2400.      window but then affect a different window
  2401.  
  2402.    * Fix bug where click-to-focus doesn't work for new windows
  2403.  
  2404.    * Fix bug where deleting the last workspace selected the first, not
  2405.      the new last workspace
  2406.  
  2407.    * Fix bug where changing a colormap when no window is focused causes
  2408.      a segfault
  2409.  
  2410.    * Fix bug where iconifying a window may leave it in the clicked
  2411.      state after it's uniconified
  2412.  
  2413.    * Fix Caps_Lock and Num_Lock modifiers interfering with bindings
  2414.  
  2415.    * Fix accessing X properties on 64-bit architectures
  2416.  
  2417.    * Fix bug where pointer may be left grabbed after moving a window
  2418.  
  2419.  
  2420. 0.3a
  2421. ====
  2422.  
  2423.    * Support the maximized GNOME window states
  2424.  
  2425.    * Where available, show documentation strings of commands in the
  2426.      configurator
  2427.  
  2428.    * Improve the method of handling clicks in frame-parts
  2429.  
  2430.    * Fix asynchronous client-server protocol
  2431.  
  2432.    * Fix interactive window moving/resizing (don't leave traces of the
  2433.      rubber-band, stop the window initially "jumping" to the pointer)
  2434.  
  2435.  
  2436. 0.3
  2437. ===
  2438.  
  2439.    * Implemented window maximization
  2440.  
  2441.    * Added support for snapping to window edges when interactively
  2442.      moving windows (`move-snap-edges' and `move-snap-epsilon')
  2443.  
  2444.    * First attempt at handling a subset of the Motif and OpenLook
  2445.      window hints
  2446.  
  2447.    * Removed the `sloppy-focus' variable, it's replaced by
  2448.      `focus-mode'. This can currently be one of `enter-exit' (normal
  2449.      focus follows pointer), `enter-only' ("sloppy" focus) or `click'
  2450.      (click to focus)
  2451.  
  2452.    * When resolving pointer events, scan the `keymap' property of the
  2453.      window under the pointer, not the focused window (as with keypress
  2454.      events)
  2455.  
  2456.    * The `sawmill-client' program can now communicate inter-host, since
  2457.      it uses X properties not raw sockets
  2458.  
  2459.    * New hook `before-exit-hook', called immediately before shutting
  2460.      down
  2461.  
  2462.    * Rewrote the GNOME support as a Lisp module
  2463.  
  2464.    * Placing windows interactively now works
  2465.  
  2466.    * Fixed the bug on Solaris where deleting windows could cause a
  2467.      segmentation fault
  2468.  
  2469.  
  2470. 0.2
  2471. ===
  2472.  
  2473.    * Added a user-customization system, inspired by Emacs' customize
  2474.      facility. Invoke this through the `sawmill-ui' program, or from
  2475.      the `Customize...' entry in the main menu. All changes are stored
  2476.      in the Lisp script `~/.sawmill-custom'
  2477.  
  2478.    * Selected windows may now be raised (`raise-selected-windows')
  2479.  
  2480.    * It's possible to prevent the mouse pointer being warped to
  2481.      selected windows (`warp-to-selected-windows')
  2482.  
  2483.    * The `brushed-metal' and `simple' themes now define all four
  2484.      standard frame types
  2485.  
  2486.    * Frame themes are now stored in a separate directory
  2487.      (`PREFIX/share/sawmill/VERSION/lisp/themes') so that the list of
  2488.      all available themes can be made automatically
  2489.  
  2490.    * The frame colors of the `simple' frame style can now be customized
  2491.      (`simple-normal-color' and `simple-active-color')
  2492.  
  2493.    * The `sawmill-defaults.jl' script enables GNOME compliance
  2494.      unconditionally (since it has no ill-effects even if GNOME isn't
  2495.      being used)
  2496.  
  2497.    * Transient windows can be given the same frames as normal windows
  2498.      (`decorate-transients')
  2499.  
  2500.    * Newly-displayed transient windows can be automatically given the
  2501.      focus if their parent window is focused (`transients-get-focus')
  2502.  
  2503.    * Any newly-displayed windows can be automatically given the input
  2504.      focus (`focus-windows-when-mapped')
  2505.  
  2506.    * The `foreground', `background' and `font' attributes of each frame
  2507.      part may now refer to a function
  2508.  
  2509.    * Fixed the window-move bug whereby the first motion event was
  2510.      discarded
  2511.  
  2512.    * Fixed the bug where windows may be placed partially off the root
  2513.      window, even if they needn't be
  2514.  
  2515.    * Fixed the shaped frame parts bug (they didn't work)
  2516.  
  2517.    * Miscellaneous other bug-fixes
  2518.  
  2519.  
  2520. 0.1
  2521. ===
  2522.  
  2523.    First proper release
  2524.  
  2525.